//package com.hero.take.util;
//
//
//import cn.dev33.satoken.stp.StpUtil;
//import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
//import com.hero.desweb.module.system.entity.po.SysOrgPo;
//import com.hero.desweb.module.system.entity.po.SysUserPo;
//import com.hero.desweb.module.system.service.SysOrgService;
//import com.hero.desweb.module.system.service.SysUserService;
//import lombok.extern.slf4j.Slf4j;
//import org.apache.commons.collections.CollectionUtils;
//import org.apache.commons.lang3.StringUtils;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Component;
//
//import java.util.ArrayList;
//import java.util.Arrays;
//import java.util.List;
//import java.util.stream.Collectors;
//
//@Component
//@Slf4j
//public class OrgUtils {
//
//
//    @Autowired
//    private SysOrgService orgService;
//
//    @Autowired
//    private SysUserService userService;
//
//
//    /**
//     * 获取机构树中的机构ID列表以当前用户所在机构为顶点
//     * @return
//     */
//    public List<Integer> getTheOrgIdsInTheCurrentUsersOrgTree(){
//        Object userId = StpUtil.getLoginId();
//        SysUserPo user = userService.getById(userId.toString());
//        List<SysOrgPo> list = orgService.list(
//                new QueryWrapper<SysOrgPo>()
//                        .like("path", "[" + user.getOrgId() + "]")
//                        .eq("del_flag", 0)
//        );
//        if(CollectionUtils.isEmpty(list)){
//            return new ArrayList<Integer>(){{
//                add(-1); //防止在sql in的时候，空数组报错
//            }};
//        }
//        return list.stream().map(SysOrgPo::getId).collect(Collectors.toList());
//    }
//
//    public SysOrgPo getCurrentUserOrg() {
//        Object userId = StpUtil.getLoginId();
//        SysUserPo user = userService.getById(userId.toString());
//        return orgService.getById(user.getOrgId());
//    }
//
//    public List<Integer> getUserIdsByOrgId(Integer orgId){
//        SysOrgPo sysOrgPo = orgService.getById(orgId);
//        if (sysOrgPo == null){
//            return new ArrayList<Integer>(){{
//                add(-1);
//            }};
//        }
//        List<Integer> result = new ArrayList<>();
//        Arrays.stream(sysOrgPo.getPath().split(",")).forEach(item->{
//            result.add(Integer.valueOf(StringUtils.strip(item,"[]")));
//        });
//
//        return result;
//    }
//
//    public Integer getCurrentUserParentOrgByLevel(int level) {
//        SysOrgPo org = getCurrentUserOrg();
//        String[] orgIds = org.getPath().split(",");
//        try {
//            return Integer.valueOf(orgIds[level]);
//        } catch (Exception ignored) {
//        }
//        return null;
//    }
//}
